package chapter05

/**
 *
 * @author cdhuangchao3
 * @date 2023/6/4 8:20 PM
 */
object Test05_HighOrderFunction {
  def main(args: Array[String]): Unit = {
    def f(n: Int): Int = {
      println("f调用")
      n + 1
    }

    val result = f(123)
    println(result)
    // 1、函数作为值传递
    //    def f1(f:Int => Int): Unit = {
    //
    //    }
    val f1: Int => Int = f
    val f2 = f _
    println(f1)
    println(f1(1))
    println(f2)
    println(f2(2))

    // 2、函数作为参数进行传递

    // 3、函数作为函数的返回值返回
    def f5(): Int => Unit = {
      def f6(a: Int): Unit = {
        println("f6调研" + a)
      }

      f6
    }
    f5()(3)
  }
}
